"""
!/usr/bin/env python
-*- coding: utf-8 -*-
@Author  : MarkJia
@Site    : 
@File    : 15、fixture.py
"""

# 数据共享 conftest.py   可以跨文件共享
# 总结：

"""
Fixture 的特点
    1. 命令灵活：对于 setup,teardown ，可以不起这两个名字
    2. 数据共享： 在 confitest.py 配置里写方法可以实现数据共享，不需要 import 导入。可以跨文件共享
    3. scope 的层次及神奇的 yield 组合相当于各种的 setup 和 teardown
    4. 实现参数化

一、模拟 setup、teardown
二：yield用法   类似于 return 和 teardown 的并集
三：作用域：session 会话、moudle 模块、class 类、function 方法
四：自动执行： autouse = True
五：conftest.py  数据共享 --  该文件名是固定的，一般放在项目的根目录下

"""

# 举例
import pytest
from selenium import webdriver


@pytest.fixture()
def get_driver():
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.maximize_window()
    yield driver
    driver.quit()


# 一：定义一个登录的fixture
@pytest.fixture()
def login():
    print('进行登录操作')


# 二：以下函数都需要先登录，调用时直接传入login
def test_serch(login):
    print('搜素')  # 返回：进行登录操作  搜索


def test_cart(login):
    print('购物车') # 返回：进行登录操作  购物车


def test_order(login):
    print('下单') # 返回：进行登录操作  下单
